TABLE OF CONTENTS

externalclass/--background--
externalclass/EXT_Class
externalclass/EXT_ClassID
externalclass/EXT_MinHeight
externalclass/EXT_MinWidth
externalclass/EXT_NoRebuild
externalclass/EXT_Object
externalclass/EXT_TrackAttr


top externalclass/--background--
    NAME
	Class:		externalclass
	Superclass:	baseclass
	Include File:	

    FUNCTION
	To provide an interface class which can be used to include third-party
	gadget	classes  like  the colorwheel.gadget in a BGUI user interface.
	Notification  is  currently only possible via the WM_ADDUPDATE method.
	See  the  windowclass  documentation  for  more  information  on  this
	subject.



top externalclass/EXT_Class
    NAME
	EXT_Class -- ( Class * )

    FUNCTION
	Set  the  class  from  which this class needs  to  create  an  object.
	This attribute expects a pointer to an already initialized class.

    NOTE
	Please	note  that  _you_ are  responsible for opening and closing the
	class yourself.

    DEFAULT
	NULL.

    APPLICABILITY
	(I).

    SEE ALSO
	EXT_ClassID



top externalclass/EXT_ClassID
    NAME
	EXT_ClassID -- ( STRPTR )

    FUNCTION
	Set  the  class  from  which  this  class  needs  to create an object.
	This attribute expects a pointer to the name of the public class  like
	for instance "colorwheel.gadget".

    NOTE
	Please	note  that  _you_  are	responsible for opening and closing the
	class library yourself.

    DEFAULT
	NULL.

    APPLICABILITY
	(I).

    SEE ALSO
	EXT_Class



top externalclass/EXT_MinHeight
    NAME
	EXT_MinHeight -- ( ULONG )

    FUNCTION
	As  external  classes  normally  do  not  understand the layout engine
	methods  used  by  BGUI  it  has  to  be  helped  a little. With  this
	attributes  you  set  the  minimum  height of the external object.  It
	is very important to set reasonable values here because no checks  are
	made.

    DEFAULT
	0 (stupid size).

    APPLICABILTY
	(I).

    SEE ALSO
	EXT_MinWidth



top externalclass/EXT_MinWidth
    NAME
	EXT_MinWidth -- ( ULONG )

    FUNCTION
	As  external  classes  normally  do  not  understand the layout engine
	methods  used  by  BGUI  it  has  to  be  helped  a little. With  this
	attributes  you  set  the  minimum  width  of the external object.  It
	is very important to set reasonable values here because no checks  are
	made.

    DEFAULT
	0 (stupid size).

    APPLICABILTY
	(I).

    SEE ALSO
	EXT_MinHeight



top externalclass/EXT_NoRebuild
    NAME
	EXT_NoRebuild -- ( BOOL )

    FUNCTION
	To tell the external class that the external object  does not  have to
	be rebuilt after a re-size. Most classes are smart enough to  handle a
	resize  of the  object  themselves  but  there  are  classes  like the
	colorwheel.gadget that requires a rebuild upon a size change.

	When this   attribute	is   set  to  TRUE the class will  not rebuild
	the external  object  and  you	do  not  need to use the EXT_TrackAttr
	attribute to handle the object settings.

    DEFAULT
	FALSE.

    APPLICABILITY
	(I).

    SEE ALSO
	EXT_TrackAttr, EXT_Object



top externalclass/EXT_Object
    NAME
	EXT_Object -- ( Object * )

    FUNCTION
	Get  a	pointer  to  the "real" external object. Please note that this
	pointer   changes  at  every  size  change  unless  the  EXT_NoRebuild
	attribute is FALSE.

    APPLICABILITY
	(G).

    SEE ALSO
	EXT_NoRebuild



top externalclass/EXT_TrackAttr
    NAME
	EXT_TrackAttr -- ( Tag )

    FUNCTION
	To  tell which attributes from the external object need to be tracked.
	Because some external classes, like the colorwheel, cannot change size
	once  created  it  is necessary  that the externalclass recreates the
	object	at each size  change.  As this usually means  that the current
	external  object  settings are lost you can tell which attributes need
	to be tracked.

	The  tracked  attributes are obtained by sending the external object a
	OM_GET	method	for  each  of the attributes. This means that the only
	attributes  that  can be tracked are the ones that are gettable on the
	external object. There is no limit as to the number of attributes that
	are trackable.

	Please note however that internally the tracked attributes  are stored
	in a  32bit  integer  which  means  that  tracking attributes like the
	colorwheel.gadget it's WHEEL_RGB will not work.

	You can also pass attributes that are meant for the external object at
	initialization time. These attributes are remembered by this class and
	reused at each recreation of the external object.

    EXAMPLE
	Object		*wheel;
	struct Screen	*screen;

	/*
	**	Create a "colorwheel.gadget" external object.
	**/
	wheel = ExternalObject,
		EXT_MinWidth,			30,
		EXT_MinHeight,			30,
		EXT_ClassID,			"colorwheel.gadget",
		WHEEL_Saturation,		0,
		WHEEL_Screen,			screen,
		EXT_TrackAttr,			WHEEL_Saturation,
		EXT_TrackAttr,			WHEEL_Hue,
	EndObject;

	All   tags   defined  above  are  saved  (including  the  tags	passed
	automatically by the ExternalObject macro). Now a seperate copy of the
	attributes to track is created.

	Once  the object needs to be  recreated the  first  thing what is done
	is getting the tracked attribute values from the old object.

	Now  the  old  object  is  disposed  of  and a new one is created with
	exactly the same attributes that where passed at initialization time.

	Once  this  is	accomplished the tracked attributes are set to the new
	object.

	Please note that tracking attributes  is only  necessary with  classes
	that require a rebuild of the object when it is resized.

    APPLICABILITY
	(I).

    BUGS
	The  EXT_xxx  attributes from the initialization tags are not filtered
	out of the saved tag list.

	Only attributes which fit in a 32bit integer can be tracked.

    SEE ALSO
	EXT_NoRebuild